/**
 * 全局函数定义
 * 提供全局可用的函数
 */

// 全局复制结果函数
function copyResult(button) {
    const resultContent = button.parentNode.nextElementSibling;
    const text = resultContent.textContent || resultContent.innerText;
    UIUtils.copyToClipboard(text);
}

// 设置全局函数
window.switchTab = async (tabId) => {
    await UIUtils.switchTab(tabId);
};

window.UIUtils = UIUtils;
window.copyResult = copyResult;

// 命令行模式功能 - 使用无头模式
window.openCommandMode = async () => {
    try {
        // 创建命令行模式对话框
        const cmdDialog = document.createElement('div');
        cmdDialog.className = 'cmd-dialog';
       
        document.head.appendChild(style);

        // 添加到页面
        document.body.appendChild(cmdDialog);

        // 获取元素
        const cmdOutput = document.getElementById('cmd-output');
        const cmdInput = document.getElementById('cmd-input');

        // 添加欢迎信息
        cmdOutput.textContent = '欢迎使用 Claude 无头模式！\n直接输入任务描述开始使用，输入 "exit" 退出。\n\n';

        // 处理输入
        const handleCommand = async (command) => {
            if (command.trim() === '') return;
            
            // 显示命令
            cmdOutput.textContent += `claude$ ${command}\n`;
            
            if (command.trim().toLowerCase() === 'exit') {
                cmdOutput.textContent += '退出无头模式...\n';
                setTimeout(() => cmdDialog.remove(), 500);
                return;
            }

            if (command.trim().toLowerCase() === 'clear') {
                cmdOutput.textContent = '';
                return;
            }

            // 执行命令 - 使用无头模式，不需要API Key
            cmdOutput.textContent += '执行中...\n';
            try {
                // 使用内置的API Key进行无头模式执行
                const defaultApiKey = '080bf09abe8d48628b64176b09c56372.KbzCc7261u8wqYoK';
                const result = await apiService.executeClaudeHeadless(defaultApiKey, command);
                
                if (result.success) {
                    cmdOutput.textContent += result.output + '\n\n';
                } else {
                    cmdOutput.textContent += `错误: ${result.error}\n\n`;
                }
            } catch (error) {
                cmdOutput.textContent += `错误: ${error.message}\n\n`;
            }

            // 滚动到底部
            cmdOutput.scrollTop = cmdOutput.scrollHeight;
        };

        // 绑定事件
        cmdInput.addEventListener('keypress', (e) => {
            if (e.key === 'Enter') {
                const command = cmdInput.value;
                cmdInput.value = '';
                handleCommand(command);
            }
        });

        // 点击外部关闭
        cmdDialog.addEventListener('click', (e) => {
            if (e.target === cmdDialog) {
                cmdDialog.remove();
            }
        });

    } catch (error) {
        UIUtils.showMessage(`打开无头模式失败: ${error.message}`, 'error');
        console.error('无头模式错误:', error);
    }
};

// 安装引导页面相关的全局函数
window.copyToClipboard = async (text) => {
    await UIUtils.copyToClipboard(text);
};

// 清除所有历史记录
window.clearAllHistory = async () => {
    try {
        // 确认对话框
        const confirmed = confirm('确定要清除所有历史记录吗？\n\n此操作将删除所有项目的对话记录，且无法恢复。');
        
        if (!confirmed) {
            console.log('[clearAllHistory] 用户取消了清除操作');
            return;
        }

        UIUtils.showLoading('正在清除历史记录...');

        // 调用 IPC 清除历史记录
        const result = await window.electronAPI.clearAllHistory();

        UIUtils.hideLoading();

        if (result.success) {
            UIUtils.showMessage('✅ 历史记录已清除', 'success');
            console.log('[clearAllHistory] 历史记录清除成功');
            
            // 如果当前在历史记录页面，刷新页面显示
            if (window.pageManager && window.pageManager.getCurrentPage() === 'history') {
                if (window.historyHandler && window.historyHandler.loadWorkspaceList) {
                    setTimeout(() => {
                        window.historyHandler.loadWorkspaceList();
                    }, 300);
                }
            }
        } else {
            UIUtils.showMessage(`清除失败: ${result.message}`, 'error');
            console.error('[clearAllHistory] 清除失败:', result.message);
        }
    } catch (error) {
        UIUtils.hideLoading();
        UIUtils.showMessage(`清除异常: ${error.message}`, 'error');
        console.error('[clearAllHistory] 清除异常:', error);
    }
};

// 清除 API 配置
window.clearApiConfig = async (event) => {
    try {
        // 阻止事件冒泡，避免触发父元素的点击事件
        if (event) {
            event.stopPropagation();
            event.preventDefault();
        }

        // 确认对话框
        const confirmed = confirm('确定要清除 API 配置吗？\n\n此操作将清空当前保存的 API Key、模型配置等信息。');
        
        if (!confirmed) {
            console.log('[clearApiConfig] 用户取消了清除操作');
            return;
        }

        UIUtils.showLoading('正在清除 API 配置...');

        // 创建空配置
        const emptyConfig = {
            provider: null,
            model: null,
            apiKey: null
        };

        // 调用 IPC 保存空配置
        const result = await window.electronAPI.invoke('storage:save-model-config', emptyConfig);

        UIUtils.hideLoading();

        if (result.success) {
            UIUtils.showMessage('✅ API 配置已清除', 'success');
            console.log('[clearApiConfig] API 配置清除成功');
            
            // 更新页面显示
            const headerApiStatus = document.getElementById('header-api-status');
            const apiStatusDot = document.getElementById('api-status-dot');
            
            if (headerApiStatus) {
                headerApiStatus.textContent = '未配置';
            }
            if (apiStatusDot) {
                apiStatusDot.className = 'status-dot disconnected';
            }

            // 如果有 HomeHandler 实例，清除其缓存
            if (window.homeHandler && window.homeHandler.clearConnectionTestCache) {
                window.homeHandler.clearConnectionTestCache();
            }
        } else {
            UIUtils.showMessage(`清除失败: ${result.message}`, 'error');
            console.error('[clearApiConfig] 清除失败:', result.message);
        }
    } catch (error) {
        UIUtils.hideLoading();
        UIUtils.showMessage(`清除异常: ${error.message}`, 'error');
        console.error('[clearApiConfig] 清除异常:', error);
    }
};


// 添加更多测试用例
window.testClaudeAdvanced = async () => {
    try {
        UIUtils.showLoading('正在测试 Claude 高级功能...');
        
        const testApiKey = '080bf09abe8d48628b64176b09c56372.KbzCc7261u8wqYoK';
        const testTasks = [
            '请用中文回答：什么是人工智能？',
            '请用中文回答：如何学习编程？',
            '请用中文回答：Python 和 JavaScript 有什么区别？'
        ];
        
        const results = [];
        
        for (let i = 0; i < testTasks.length; i++) {
            const task = testTasks[i];
            console.log(`[测试] 执行任务 ${i + 1}/${testTasks.length}: ${task}`);
            
            try {
                const result = await apiService.executeClaudeHeadless(testApiKey, task);
                results.push({
                    task,
                    result,
                    success: result.success
                });
                
                // 添加延迟避免请求过快
                if (i < testTasks.length - 1) {
                    await new Promise(resolve => setTimeout(resolve, 1000));
                }
            } catch (error) {
                results.push({
                    task,
                    result: { success: false, error: error.message },
                    success: false
                });
            }
        }
        
        UIUtils.hideLoading();
        
        // 显示结果
        const resultDiv = document.createElement('div');
        resultDiv.className = 'advanced-test-result';
        resultDiv.style.cssText = `
            margin-top: 20px;
            padding: 15px;
            background: #f8fafc;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
        `;
        
        let resultHTML = '<div style="font-weight: 600; color: #1e293b; margin-bottom: 15px;">🧪 高级测试结果:</div>';
        
        results.forEach((item, index) => {
            const status = item.success ? '✅' : '❌';
            const color = item.success ? '#059669' : '#dc2626';
            
            resultHTML += `
                <div style="margin-bottom: 15px; padding: 10px; background: white; border-radius: 6px; border-left: 4px solid ${color};">
                    <div style="font-weight: 500; color: #374151; margin-bottom: 5px;">
                        ${status} 任务 ${index + 1}: ${item.task}
                    </div>
                    ${item.success ? 
                        `<div style="color: #4b5563; font-size: 14px;">${item.result.output}</div>` :
                        `<div style="color: #dc2626; font-size: 14px;">错误: ${item.result.error}</div>`
                    }
                </div>
            `;
        });
        
        resultDiv.innerHTML = resultHTML;
        
        const homeContent = document.querySelector('.tab-content.active');
        if (homeContent) {
            homeContent.appendChild(resultDiv);
        }
        
        const successCount = results.filter(r => r.success).length;
        UIUtils.showMessage(`高级测试完成！成功: ${successCount}/${results.length}`, 'success');
        
    } catch (error) {
        UIUtils.hideLoading();
        UIUtils.showMessage(`高级测试失败: ${error.message}`, 'error');
        console.error('[测试] Claude 高级测试异常:', error);
    }
};
